import axios from 'axios'
import router from "@/router";

// 创建axios实例并配置
const request = axios.create({
    baseURL: '/api', // 基础路径
    timeout: 5000 // 超时时间
})

/**
 * 请求拦截器：在请求发送前拦截，对请求做一些处理，比如统一加token，修改请求头等
 */
request.interceptors.request.use(config => {
    // 设置请求头为JSON格式
    config.headers['Content-Type'] = 'application/json;charset=utf-8'; 
    // 添加token
    let user = localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : null
    if (user) {
        // 如果有用户信息，将token添加到请求头
        config.headers['token'] = user.token; 
    }
    return config
}, error => {
    return Promise.reject(error) 
});

/**
 * 响应拦截器：在响应返回后拦截，对响应结果做处理，比如统一处理数据格式、日志记录等
 */
request.interceptors.response.use(response => {
    let res = response.data;
    // 如果是返回的文件
    if (response.config.responseType === 'blob') {
        return res
    }
    // 兼容服务端返回的字符串数据
    if (typeof res === 'string') {
        res = res ? JSON.parse(res) : res
    }
    // 当权限验证不通过的时候给出提示
    if (res.code === 401) {
        // ElementUI.Message({
        //     message: res.msg,
        //     type: 'error'
        // });
        router.push("/login")
    }
    return res;
}, error => {
    console.log('err --> ' + error) // for debug
    return Promise.reject(error)
})

export default request

